package com.gsk.europepharma.salesReport.utils;

import javax.servlet.ServletContext;

import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
import org.springframework.web.context.WebApplicationContext;
import org.springframework.web.struts.ContextLoaderPlugIn;

/**
 * @author mqf31318
 *
 */
public class SpringUtil {
	private static Log log = LogFactory.getLog(SpringUtil.class);
	
	// Context SPRING initialise par le Plugin SPRING 
	// dans le struts-config
	private static ServletContext servletContext = null;	
	private static WebApplicationContext springContext = null;
	
	/**
	 * Initialisation SPRING contexte.
	 * @param servletContext
	 */
	public static void setServletContext(ServletContext context) {
		servletContext = context;
	}
	
	private static WebApplicationContext getSpringContext() {
		if (springContext == null) {
			springContext = (WebApplicationContext)servletContext.getAttribute(ContextLoaderPlugIn.SERVLET_CONTEXT_PREFIX);
		}
		return springContext;
	}
	
	/**
	 * Retourne le Bean decrit dans le fichier de config
	 * /WEB-INF/spring-config.xml
	 * Si bean <id> existe retourne le bean sinon retourne null.
	 * @param id Bean Id
	 * @return Object
	 */
	public static Object getBean(String id) {
		WebApplicationContext context = getSpringContext();		
		if (context != null && context.containsBean(id))
			return context.getBean(id);
		else {
			if (log.isErrorEnabled())
				log.error("Impossible de recuperer le bean d'id [" + id + "] du contexte Spring [Classe [ServiceLocator], Methode [getBean]]");
		}
		return null;
	}	
}
